package com.jml.SimpleTomcat;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Server {


	/*
	 Tomcat其实就是一个socket编程
	 	下面的流程中 有两个流程,

	 	第一个流程是 客户端请求浏览器的流程
	 	第二个业务流程是 服务器给客户端返回数据的业务流程


	 	两个业务类型不同，在这里可以抽取两个业务类  来分别抽取 两个不同的业务类

	 	抽取HttpRequest 和 HttpResponse 两种业务

	 */
	public static void main(String[] args) {

		//发送信息的电报机
		ServerSocket serverSocket = null;
		Socket client = null;
		try {
			serverSocket = new ServerSocket(8888);
			System.out.println("服务器初始化完毕，初始化的端口是 8888");
			//这里在不断的接收客户端请求
			while (true) {
				//服务端接收客户端的Socket连接过来
				client = serverSocket.accept();
				//对客户端端里面的请求信息进行处理
				InputStream in = client.getInputStream();
				//定义一个读取缓冲流,主要是在InputStream流当中读取这些字节
				byte[] buff = new byte[1024];
				int len = in.read(buff);
				if (len > 0) {
					String msg = new String(buff, 0, len);
					System.out.println("客户端请求信息!" + "============" + msg + "============");
					OutputStream os = client.getOutputStream();
					SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

					//构建一个响应头信息 200 OK
					StringBuffer sb = new StringBuffer();
					//响应头信息

					sb.append("HTTP/1.1 200 OK\n");
					sb.append("Content-Type: text/html;charset=UTF-8\n");
					sb.append("cahce-control:max-age-0");
					sb.append("Upgrade-Insecure-Requests: 1");
					sb.append(
							"User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36");
					sb.append("Accept-Encoding:gzip, deflate, br");
					sb.append("Accept-Language:zh-CN,zh;q=0.9");
					sb.append("\r\n");

					//响应正文
					String html = "<html><head><title>欢迎各位同学</title></head><body>  当前时间:" +
							"<font size='14' color='blue'>" +
							format.format(new Date()) +
							"</font><br/> 服务器回复: <font size='14' color='blue'> 大家今天有收货吗 </font>" +
							"<br/>服务器回复:<font size='14' color='blue'>大家今天有收获吗</font>" +
							"</body></html>";
					//把响应头和正文都连接在了一起
					sb.append(html);

					//响应业务,
					os.write(sb.toString().getBytes());
					os.flush();
					os.close();
				}
			}


		} catch (Exception e) {

		}
	}
}

